const modeTypes = ["date", "time", "year-month", "datetime"];

export const dateTimePickerProps = {
  // 是否打开组件
  show: {
    type: Boolean,
	default:null
  },
  // 是否展示顶部的操作栏
  showToolbar: {
    type: Boolean,
	default:null
  },
  // 绑定值
  value: {
    type: [String, Number]
  },
  // 绑定值
  modelValue: {
    type: [String, Number]
  },
  // 顶部标题
  title: {
    type: String
  },
  // 展示格式，mode=date为日期选择，mode=time为时间选择，mode=year-month为年月选择，mode=datetime为日期时间选择
  mode: {
    type: String,
    values: modeTypes
  },
  // 可选的最大时间
  maxDate: {
    type: Number
  },
  // 可选的最小时间
  minDate: {
    type: Number
  },
  // 可选的最小小时，仅mode=time有效
  minHour: {
    type: Number
  },
  // 可选的最大小时，仅mode=time有效
  maxHour: {
    type: Number
  },
  // 可选的最小分钟，仅mode=time有效
  minMinute: {
    type: Number
  },
  // 可选的最大分钟，仅mode=time有效
  maxMinute: {
    type: Number
  },
  // 选项过滤函数
  filter: {
    type: [Function],
  },
  // 选项格式化函数
  formatter: {
    type: [Function],
  },
  // 是否显示加载中状态
  loading: {
    type: Boolean,
	default:null
  },
  // 各列中，单个选项的高度
  itemHeight: {
    type: [String, Number]
  },
  // 取消按钮的文字
  cancelText: {
    type: String
  },
  // 确认按钮的文字
  confirmText: {
    type: String
  },
  // 取消按钮的颜色
  cancelColor: {
    type: String
  },
  // 确认按钮的颜色
  confirmColor: {
    type: String
  },
  // 每列中可见选项的数量
  visibleItemCount: {
    type: [String, Number]
  },
  // 是否允许点击遮罩关闭选择器
  closeOnClickOverlay: {
    type: Boolean,
	default:null
  }
};

export const dateTimePickerEmits = {
  close: () => true,
  confirm: (e: { value: string | number; mode: string }) => true,
  change: (e: { value: string | number; mode: string }) => true,
  cancel: () => true,
  "update:modelValue": (value: string | number) => true,
};
